[IA64] Defined guest_mode and use it instead of user_mode.
authorAlex Williamson <alex.williamson@hp.com>
Thu, 10 May 2007 19:29:33 +0000 (13:29 -0600)
committerAlex Williamson <alex.williamson@hp.com>
Thu, 10 May 2007 19:29:33 +0000 (13:29 -0600)
Signed-off-by: Tristan Gingold <tgingold@free.fr>
xen/arch/ia64/vmx/vmx_process.c
xen/arch/ia64/xen/faults.c
xen/arch/ia64/xen/xenmisc.c
xen/include/asm-ia64/linux-xen/asm/ptrace.h

index 5887f0857edc6add22ac2a13f13045c5b0f703d9..15d7bce18b0a955ab397e3cf4d3bb9317794dabf 100644 (file)
@@ -164,7 +164,7 @@ vmx_ia64_handle_break (unsigned long ifa, struct pt_regs *regs, unsigned long is
         if (iim == 0) 
             vmx_die_if_kernel("Break 0 in Hypervisor.", regs, iim);
 
-        if (!user_mode(regs)) {
+        if (ia64_psr(regs)->cpl == 0) {
             /* Allow hypercalls only when cpl = 0.  */
             if (iim == d->arch.breakimm) {
                 ia64_hypercall(regs);
index e33952eb545d3f1f5a08e660474f447c33a92397..966a51b5b846a5eed8a0164018e4fced1cb8ffaa 100644 (file)
@@ -209,7 +209,7 @@ void ia64_do_page_fault(unsigned long address, unsigned long isr,
 
        if (is_ptc_l_needed)
                vcpu_ptc_l(current, address, logps);
-       if (!user_mode(regs)) {
+       if (!guest_mode(regs)) {
                /* The fault occurs inside Xen.  */
                if (!ia64_done_with_exception(regs)) {
                        // should never happen.  If it does, region 0 addr may
index 450ec450797eeb7d145b45b887a01e6619261911..57725a53b859cb839ac65e7f2ec8a72bacf94aa4 100644 (file)
@@ -79,7 +79,7 @@ void console_print(char *msg)
 
 void die_if_kernel(char *str, struct pt_regs *regs, long err)
 {
-       if (user_mode(regs))
+       if (guest_mode(regs))
                return;
 
        printk("%s: %s %ld\n", __func__, str, err);
index 574c69d163a157bc858740c5cbc983fc8cf84877..c63da0a5f99ad72c18418f6549f1973121f3a693 100644 (file)
@@ -265,7 +265,11 @@ struct switch_stack {
   /* given a pointer to a task_struct, return the user's pt_regs */
 # define ia64_task_regs(t)             (((struct pt_regs *) ((char *) (t) + IA64_STK_OFFSET)) - 1)
 # define ia64_psr(regs)                        ((struct ia64_psr *) &(regs)->cr_ipsr)
+#ifdef XEN
+# define guest_mode(regs)              (ia64_psr(regs)->cpl != 0)
+#else
 # define user_mode(regs)               (((struct ia64_psr *) &(regs)->cr_ipsr)->cpl != 0)
+#endif
 # define user_stack(task,regs) ((long) regs - (long) task == IA64_STK_OFFSET - sizeof(*regs))
 # define fsys_mode(task,regs)                                  \
   ({                                                           \